﻿using Styx.TreeSharp;
using Action = Styx.TreeSharp.Action;

namespace TuanHA_Combat_Routine
{
    public partial class Classname
    {
        #region Retribution Rotation

        private static Composite RetributionRotation()
        {
            return new PrioritySelector(
                //WriteTimeStartComp(),
                ///hotkey增加一个功能，按了后，3秒内都会自动使用，
                ///自动找目标, 最优目标:自己被定身, 找5码内的, 没有被定身, 找20码内的
                AutoTarget(),
                //But first, facing target
                //new Decorator(
                //    ret =>
                //    THSettings.Instance.AutoFace &&
                //    !IsOverrideModeOn &&
                //    !CurrentTargetCheckFacing &&
                //    CurrentTargetAttackable(10) &&
                //    (Me.CurrentTarget.IsTargetingMeOrPet ||
                //     Me.CurrentTarget.IsTargetingMyPartyMember ||
                //     Me.CurrentTarget.IsTargetingMyRaidMember) &&
                //    !Me.Mounted,
                //    new Action(delegate
                //        {
                //            Me.CurrentTarget.Face();
                //            return RunStatus.Failure;
                //        })
                //    ),
                ///在无敌,保护时, 如果蓝足够多, 自动停止移动一秒钟, 给自己加血
                BubbleFlashofLightRet(),
                //Starting the movement right here
                //MovementMoveBehind(ret => Me.CurrentTarget),
                MovementMoveToMelee(ret => Me.CurrentTarget),
                MovementMoveStop(ret => Me.CurrentTarget, 3),
                //DPS Rotation Here
                LayonHands(),
                ///15码内, 守卫cd在一定范围内, 可改为圣洁天赋, 30码内开始使用, done
                AvengingWrathBurstRet(),
                ///15码内, 守卫cd在一定范围内
                HolyAvengerBurstRet(),
                ///圣佑术, 只是通过血量开启, 可增加更多的条件
                ///把触发血量设置得低一点，然后增加一个判断，在特殊时刻开启
                DivineProtection(),
                ///在战场,JJC自动嘲讽
                ReckoningPvPComp(),
                ///光环, 可以把触发血量设低点，或者关掉血量出发，只留下被沉默触发
                DevotionAura(),
                UseHealthStoneHP(),
                UseBattleStandard(),
                //HammerofJustice(),
                //BlindingLight(),
                //WarStomp(),
                //HammerofJusticeBurstRet(),
                ///敌人血少时制裁, 可增加2vs2时, 当前目标血少, 制裁治疗
                HammerofJusticeEnemyLow(),
                HammerofJusticeEnemyUsingCD(),
                ///血少且40码内有人,无敌
                DivineShield(),
                ///血少, 身边有近战给自己保护
                HandofProtectionMe(),
                ///被控3秒以上, 给牺牲(改成JJC内, 被控4秒以上或者自己血少于50%
                HandofSacrificeFriendRetRemoveCC(),
                ///被致盲或者战士恐, 保护驱散控制
                HandofProtectionFriendRemoveCC(),
                ///血少保护
                HandofProtectionFriend(),
                ///被定身, 敌人5码以上, 60码以内, 给自己上自由
                HandofFreedomMyself(),
                ///不能用自由的时候, 有这个解定身
                Emancipate(),
                ///血少或者dot多于一定数量
                HandofPurity(),
                ///血少治疗, 2秒内只使用一次
                FlashofLightSelflessHealer(),
                FlashofLightSelflessHealerExpiring(),
                ///血少时, 用制裁/盲目进行控制
                CrowdControlHPSurviveComp(),
                ///恐恶魔
                TurnEvilASAPComp(),
                ///15码内开始守卫, 增加如果圣洁天赋, 30码可以开始
                GuardianofAncientKingsRet(),
                ///10秒可以切换一次圣印,只有在没有圣印的时候切换
                SealofTruth(),
                SealofTruthfromRighteousness(),
                SealofRighteousness(),
                ///近距离, 3星以上, 敌人被晕时
                TemplarsVerdictBurst(),
                ///自己没有被加速, 或者对方没有被减速
                JudgementRangeRetPvP(),
                ///40码内, 5秒以内, 用异端
                InquisitionMe(),
                ///菱镜,多重判断
                HolyPrism(),
                ///圣光之锤, 打地板
                LightHammer(),
                ///处决, 先队友血少给队友, 然后敌人血少给敌人, 需要加上暴发的时候用.
                ExecutionSentence(),
                JudgementRangeRetPvE(),
                ///三层buff,血少且永恒之火的buff<2秒, 荣耀圣令+血
                WordofGloryMeRet(),
                ///5星AOE风暴
                DivineStorm5HolyPower(),
                ///5星裁决, 应该加上一個暴发+后背3星裁决, 敌人被晕3星裁决, 有神圣复仇者时, 3星裁决或+血
                TemplarsVerdict5HolyPower(),
                ///当前目标,愤怒之锤, 不连续使用
                HammerofWrathCurrentTarget(),
                ///自动找目标使用愤怒之锤
                HammerofWrathUnitHammerofWrath(),
                //HammeroftheRighteousRetPvE4PlusUnit(),
                ///自动攻击隐身职业
                AttackASAPRotationInstantComp(),
                ///驱邪术,少于5星, 5码外
                Exorcism(),
                ///不在竞技场时使用
                HammeroftheRighteousRet(),
                ///对近战使用正义之锤
                HammeroftheRighteousRetWeakenedBlows(),
                ///5码内, 没有保护和意愿, 十字军打击
                CrusaderStrikeRet(),
                ///没有双重审判雕文时,就在5星内或者5码外用审判
                JudgementRet(),
                ///3星AOE
                DivineStorm3HolyPower(),
                ///3星或者有意志,异端大于7秒, 就用裁决(裁决不是神圣伤害)
                TemplarsVerdict3HolyPower(),
                ///圣洁护盾
                SacredShieldMeRet(),
                ///给队友+3星回血
                WordofGloryFriendRet(),
                ///恐惧恶魔
                TurnEvilComp(),
                ///给队友圣洁护盾
                SacredShieldFriendRet(),
                ///忏悔
                RepentanceComp(),
                ///队友血少给牺牲
                HandofSacrificeFriend(),
                ///给队友自由
                HandofFreedomFriend(),
                ///不在战斗中, 多于1星或者意志,火<1秒, 就用圣言回血
                WordofGloryMeTopUpRet(),
                ///血少,且没有敌人的目标是我,站立读条加血
                FlashofLightMeRet(),
                ///队友血少,且没有敌人的目标是我,站立读条加血
                FlashofLightFriendRet(),
                ///有星,无目标或者目标在40码外, 异端<1秒才补, 前面是敌人在40码内, 5秒补
                InquisitionMeTopUp(),
                ///不在战斗中时, 加一口
                FlashofLightMeTopUpRet(),
                BuffRotation(),
                RighteousFury(),
                DivinePlea(),
                AutoRez()
                //WriteDebug("")
                );
        }

        #endregion
    }
}